﻿/**
* 检查输入框是否为必填项
* 输入参数：
* required    : 是否为必填项，true 和 false ，true 表示为必填项 (*)
* onFocus    : 获得焦点的文字提示(如果指定样式则在样式名前加 @ ,因此文字提示首字母不能有@)
* onBlur    : 失去焦点的文字提示(如果指定样式则在样式名前加 @ ,因此文字提示首字母不能有@)(验证失败提示)
* onSucces    : 验证成功的文字提示(如果指定样式则在样式名前加 @ ,因此文字提示首字母不能有@)
* tipId    : 用于显示提示信息的控件id (*)
* 组合例子    : {required:true,onFocus:"Required",onBlur:"@error",onSucces:"Success",tipId:"tipid"}
*/
$.fn.extend({
    checkRequired: function(inputArg) {
        if (inputArg.required) {
            if ($(this).is("input") || $(this).is("textarea")) {
                //绑定获得焦点事件
                $(this).bind("focus", function() {
                    if (inputArg.onFocus != undefined) {
                        $("#" + inputArg.tipId).html(inputArg.onFocus);
                    }
                });

                //绑定失去焦点事件
                $(this).bind("blur", function() {
                    if ($(this).val() != undefined && $(this).val() != "") {
                        $("#" + inputArg.tipId).html(inputArg.onSucces);
                    } else {
                        $("#" + inputArg.tipId).html(inputArg.onBlur);
                    }
                });
            }
        }
    }
});

/**
* 检查输入项的范围
* 输入参数：
* onFocus    : 获得焦点的文字提示(如果指定样式则在样式名前加 @ ,因此文字提示首字母不能有@)
* onEmpty    : 输入项为空文字提示(如果指定样式则在样式名前加 @ ,因此文字提示首字母不能有@)
* onSucces    : 验证成功的文字提示(如果指定样式则在样式名前加 @ ,因此文字提示首字母不能有@)
* onBlur    : 失去焦点的文字提示(如果指定样式则在样式名前加 @ ,因此文字提示首字母不能有@)(验证失败提示)
* dataType    : 数据类型参数(text,number,date)
* min        : 输入的最小值
* max        : 输入的最大值
* tipId    : 用于显示提示信息的控件id (*)
* 
*/
$.fn.extend({
    checkRange: function(inputArg) {
        if ($(this).is("input") || $(this).is("textarea")) {
            //获得焦点绑定
            $(this).bind("focus", function() {
                if (inputArg.onFocus != undefined) {
                    $("#" + inputArg.tipId).html(inputArg.onFocus);
                }
            });

            //失去焦点绑定
            $(this).bind("blur", function() {
                if ($(this).val() == undefined || $(this).val() == "") {
                    $("#" + inputArg.tipId).html(inputArg.onEmpty);
                } else {
                    switch (inputArg.dataType) {
                        case "text":
                            if ($(this).val().length >= parseInt(inputArg.min) && $(this).val().length < parseInt(inputArg.max)) {
                                $("#" + inputArg.tipId).html(inputArg.onSucces);
                            } else {
                                $("#" + inputArg.tipId).html(inputArg.onBlur);
                            }
                            break;
                        case "number":
                            if (!isNaN($(this).val())) {
                                if (parseInt($(this).val()) > parseInt(inputArg.min) && parseInt($(this).val()) < parseInt(inputArg.max)) {
                                    $("#" + inputArg.tipId).html(inputArg.onSucces);
                                } else {
                                    $("#" + inputArg.tipId).html(inputArg.onBlur);
                                }
                            }
                            break;
                        case "date":
                            break;
                    }
                }
            });
        }
    }
});

/**
* 控件值之间的比较
* 输入参数:
* onFocus    : 获得焦点的文字提示(如果指定样式则在样式名前加 @ ,因此文字提示首字母不能有@)
* onEmpty    : 输入项为空文字提示(如果指定样式则在样式名前加 @ ,因此文字提示首字母不能有@)
* onSucces    : 验证成功的文字提示(如果指定样式则在样式名前加 @ ,因此文字提示首字母不能有@)
* onBlur    : 失去焦点的文字提示(如果指定样式则在样式名前加 @ ,因此文字提示首字母不能有@)(验证失败提示)
* dataType    : 数据类型参数(text,number,date) 
* comType    : 比较的类型(=,>,>=,<,<=,!=)
* tipId    : 用于显示提示信息的控件id (*)
* targetId    : 比较的目标控件Id
*/

$.fn.extend({
    checkCompare: function(inputArg) {
        if ($(this).is("input") || $(this).is("textarea")) {
            //获得焦点绑定
            $(this).bind("focus", function() {
                if (inputArg.onFocus != undefined) {
                    $("#" + inputArg.tipId).html(inputArg.onFocus);
                }
            });

            //失去焦点绑定
            $(this).bind("blur", function() {
                var targetValue = $("#" + inputArg.targetId).val();
                if (targetValue != undefined && targetValue != null) {
                    if ($(this).val() != undefined && $(this).val() != "") {
                        if (inputArg.dataType == "text") {
                            switch (inputArg.comType) {
                                case "=":
                                    if (targetValue == $(this).val()) {
                                        $("#" + inputArg.tipId).html(inputArg.onSucces);
                                    } else {
                                        $("#" + inputArg.tipId).html(inputArg.onBlur);
                                    }
                                    break;
                                case "!=":
                                    if (targetValue != $(this).val()) {
                                        $("#" + inputArg.tipId).html(inputArg.onSucces);
                                    } else {
                                        $("#" + inputArg.tipId).html(inputArg.onBlur);
                                    }
                                    break;
                            }
                        } else if (inputArg.dataType == "number") {
                            if (isNaN(targetValue) == false && isNaN($(this).val()) == false) {
                                switch (inputArg.comType) {
                                    case "=":
                                        if (targetValue == $(this).val()) {
                                            $("#" + inputArg.tipId).html(inputArg.onSucces);
                                        }
                                        else {
                                            $("#" + inputArg.tipId).html(inputArg.onBlur);
                                        }
                                        break;
                                    case "!=":
                                        if (targetValue != $(this).val()) {
                                            $("#" + inputArg.tipId).html(inputArg.onSucces);
                                        }
                                        else {
                                            $("#" + inputArg.tipId).html(inputArg.onBlur);
                                        }
                                        break;
                                    case ">":
                                        if ($(this).val() > targetValue) {
                                            $("#" + inputArg.tipId).html(inputArg.onSucces);
                                        }
                                        else {
                                            $("#" + inputArg.tipId).html(inputArg.onBlur);
                                        }
                                        break;
                                    case ">=":
                                        if ($(this).val() >= targetValue) {
                                            $("#" + inputArg.tipId).html(inputArg.onSucces);
                                        }
                                        else {
                                            $("#" + inputArg.tipId).html(inputArg.onBlur);
                                        }
                                        break;
                                    case "<":
                                        if ($(this).val() < targetValue) {
                                            $("#" + inputArg.tipId).html(inputArg.onSucces);
                                        }
                                        else {
                                            $("#" + inputArg.tipId).html(inputArg.onBlur);
                                        }
                                        break;
                                    case "<=":
                                        if ($(this).val() <= targetValue) {
                                            $("#" + inputArg.tipId).html(inputArg.onSucces);
                                        }
                                        else {
                                            $("#" + inputArg.tipId).html(inputArg.onBlur);
                                        }
                                        break;
                                }
                            } else {
                                $("#" + inputArg.tipId).html(inputArg.onBlur);
                            }
                        } else if (inputArg.dataType == "date") {

                        }
                    } else {
                        $("#" + inputArg.tipId).html(inputArg.onEmpty);
                    }
                }
            });
        }
    }
});


/**
* 正则表达式的验证
* 输入参数:
* onFocus    : 获得焦点的文字提示(如果指定样式则在样式名前加 @ ,因此文字提示首字母不能有@)
* onEmpty    : 输入项为空文字提示(如果指定样式则在样式名前加 @ ,因此文字提示首字母不能有@)
* onSucces    : 验证成功的文字提示(如果指定样式则在样式名前加 @ ,因此文字提示首字母不能有@)
* onBlur    : 失去焦点的文字提示(如果指定样式则在样式名前加 @ ,因此文字提示首字母不能有@)(验证失败提示)
* regExp    : 正则表达式
* tipId    : 用于显示提示信息的控件id (*)
*/

$.fn.extend({
    checkRegExp: function(inputArg) {
        if ($(this).is("input") || $(this).is("textarea")) {
            //获得焦点绑定
            $(this).bind("focus", function() {
                if (inputArg.onFocus != undefined) {
                    $("#" + inputArg.tipId).html(inputArg.onFocus);
                }
            });

            //获得失去焦点事件
            $(this).bind("blur", function() {
                if ($(this).val() != undefined && $(this).val() != "") {
                    if ($(this).val().match(inputArg.regExp) == null) {
                        $("#" + inputArg.tipId).html(inputArg.onSucces);
                    } else {
                        $("#" + inputArg.tipId).html(inputArg.onBlur);
                    }
                } else {
                    $("#" + inputArg.tipId).html(inputArg.onEmpty);
                }
            });
        }
    }
});
